//ハイチャートv8用2020/03/16
$(function () {
Highcharts.setOptions({global: { useUTC: false},
// http://architect-wat.hatenablog.jp/entry/20130320/1363786174 日本語化ここを参考
lang: { // 言語設定
rangeSelectorZoom: '表示範囲',
resetZoom: '表示期間をリセット',
resetZoomTitle: '表示期間をリセット',
rangeSelectorFrom: '表示期間',
rangeSelectorTo: '~',
//printButtonTitle: 'チャートを印刷',
printChart : 'チャートを印刷',
exportButtonTitle: '画像としてダウンロード',
downloadJPEG: 'JPEG画像でダウンロード',
downloadPDF: 'PDF文書でダウンロード',
downloadPNG: 'PNG画像でダウンロード',
downloadSVG: 'SVG形式でダウンロード',
months: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
weekdays: ['日', '月', '火', '水', '木', '金', '土'],
numericSymbols: null, // 1000を1kと表示しない,
thousandsSep: ","
}}
);
$('#container').highcharts('StockChart', {
chart: {
type: 'spline',
zoomType: 'x',
},
title: {
text: '' + ibe_type +' けいかじかんひかく'+"
(VS " +name+")"
},
subtitle: {
text: 'グラフ内ドラックで拡大,見出しクリックで表示/非表示'
},
credits: {
text: 'SOKUDON with highchart',
href: 'http://sokudon.s17.xrea.com/'
},
rangeSelector: {
inputEnabled: $('#container').width() > 480,
inputDateFormat: '%E日%H時%M分',
inputEditDateFormat: '%E日%H時%M分',
//inputDateFormat: '0日%q時%M分',
//inputEditDateFormat: '0日%q時%M分',
inputBoxWidth: 100,
inputDateParser: function (value) {
value = value.split(/[日時分]/);
//1388502000000= 2014/1/1 0:00
var dddd = Date.UTC(2014,0,
parseInt(value[0], 10)+1,
parseInt(value[1], 10),
parseInt(value[2], 10));
return dddd;
},
buttons : [{ //6つまで
//type : 'minute', count : 5,text : '5m'}, {
//type : 'minute', count : 10,text : '10m' }, {
//type : 'minute',count : 30,text : '30m' }, {
type : 'hour', count : 1, text : '1h'
}, {
// type : 'hour',count : 4,text : '4h'}, {
type : 'hour',
count : 8,
text : '8h'
}, {
type : 'hour', count : 12,text : '12h'},{
type : 'day',
count : 1,
text : '1d'
}, {
type : 'day',
count : 5,
text : '5d'
}, {
type : 'all',
count : 1,
text : 'All'
}]
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
millisecond: '%M分',
second: '%M分',
minute: '%H時%M分',
hour: '%H時',day: '%E日', //日数と時間で表示
//hour: '%Q時',day: '%q時',//無限時間で表示
},
title: {
text: '経過時間 日時分(day hour:minutes)'
//text: '残時間 時分(hour:minutes)'
},
plotLines: [{
color: '#FF0000',
width: 1,
value: ibe_owari //Date.UTC(2014,0,7,7,0)+15*3600*1000
}],
minRange: 10*60*1000
},
yAxis: {
title: {
text: 'ぼだ pt'
},
plotLines: [{
value: 0,
width: 2,
color: 'silver'
}],
min: 0
},
legend: {
enabled: true,
maxHeight: 100,
},
navigator: {
xAxis: {
type: 'datetime',
labels: {
formatter: function () {
return GETTIMEx(this.value);
}}
},
},
tooltip: {
shared: true,
useHTML: true,
//headerFormat: '{point.key}
',
//pointFormat: '{series.name} | ' +
//'{point.y} pt |
',
//footerFormat: '
',
//xDateFormat: dtf[dtd],
formatter: function () {
return GETdiff(this);
}
},
series: border_data
});
var chart = $('#container').highcharts(),
$button1 = $('#501'),
$button5 = $('#2001'),
$button51 = $('#5001'),
$button50 = $('#10001'),
$button401 = $('#40001'),
$button501 = $('#50001'),
$button12 = $('#20001'),
$button13 = $('#60001'),
$button14 = $('#120001'),
$buttonmd = $('#md'),
$MS = $('#MS'),
$DMS = $('#DMS'),
$RM = $('#RM'),
$PER = $('#PER'),
$buttonal = $('#all');
$PER.click(function () {
DMS=false;
RM=false;
PER=true;
chart.update({
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
millisecond:'%r',
second: '%r',
minute:'%r',
hour: '%r',
day: '%r',
},
title: {
text: '進行度(%)'
}
},
rangeSelector: {
inputDateFormat: '%r',
inputEditDateFormat: '%r',
}
});
});
$DMS.click(function () {
DMS=true;
RM=false;
PER=false;
chart.update({
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
millisecond: '%M分',
second: '%M分',
minute: '%H時%M分',
hour: '%H時',day: '%E日', //日数と時間で表示
},
title: {
text: '経過時間 日時分(day hour:minutes)'
}},
rangeSelector: {
inputDateFormat: '%E日%H時%M分',
inputEditDateFormat: '%E日%H時%M分',
}
});
});
$MS.click(function () {
DMS=false;
RM=false;
PER=false;
chart.update({
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
millisecond: '%M分',
second: '%M分',
minute: '%H時%M分',
hour: '%Q時',day: '%q時',//無限時間で表示
},
title: {
text: '経過時間 時分(hour:minutes)'
}
},
rangeSelector: {
inputDateFormat: '0日%q時%M分',
inputEditDateFormat: '0日%q時%M分',
}
});
});
$RM.click(function () {
DMS=false;
PER=false;
RM=true;
chart.update({
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
millisecond: '%M分',
second: '%M分',
minute: '%H時%M分',
hour: '%O日%N時',
day: '%O日%N時', //日数と時間で表示
},
title: {
text: '日時分(day hour:minutes)'
}},
rangeSelector: {
inputDateFormat: '%n月%O日%N時',
inputEditDateFormat: '%n月%O日%N時',
}
});
});
function houji(d){
for(var i=0;i=0){
chart.series[i].visible=false;
}
else if(!chart.series[i].visible){
chart.series[i].visible=true;
}
}
else if(!chart.series[i].visible){
chart.series[i].visible=true;
}}
for(var i=0;i(%p)
' //YYYMMDDHHmm有り
];
var youbi =['日', '月', '火', '水', '木', '金', '土'];
function csvOutputChanged(){
defaultdate="YYYY/MM/DD HH:mm";
timediff = outputdt[document.trg.time.selectedIndex];
seltxt=document.trg.time.selectedIndex;
}
//highchart V8だとuseHTMLのツールチップ高さ制限がある、超えると表示されない
function datafilter(bd,rank){
var reg = new RegExp("(^|[a-z])"+rank);
for(var i=0;i("+GETPROG(a)+")
("+GETTIMEZ(a)+")
";
if(diff){
s+= "比較対象らんきんぐ | ぽいんと | "+chart.points[0].series.name+"との差 | 〃比率 |
";
}
else{
s+= "らんきんぐ | ぽいんと |
";
}
var base=chart.points[0].y;
for(var i=0;i'
+chart.points[i].series.name
+' | '
+addc(chart.points[i].y)
+' | ';
if(diff&&i>0){
s+=''
+ addc(base-chart.points[i].y) +" | "
+''
+addc((base/chart.points[i].y).toFixed(3)) +" | ";
}
s+="";
}
s+="
";
document.getElementById("tbl").innerHTML=s;
}
else{
document.getElementById("tbl").innerHTML="";
}
s= "けいか"+d+h+m+"("+GETPROG(a)+")
("+GETTIMEZ(a)+")
";
for(var i=0;i'
+chart.points[i].series.name
+' | '
+''
+addc(chart.points[i].y)
+' pt | ';
//s+=chart.points[i].series.name +";" +chart.points[i].y;
s+="";
}
s+="
";
var date=s.match(/予定日時MMDDHHmm<\/td>()((\d+,)*\d+) pt/);
if(date){
var tmp=date[2].replace(/,/gm,"").replace(/(\d?\d)(\d\d)(\d\d)(\d\d)/,"$1/$2 $3:$4");
s=s.replace(/(予定日時MMDDHHmm<\/td>)()((\d+,)*\d+) pt/,"$1$2"+tmp);
}
return s;
}
//小数以外は正規でカンマつける
function addc(a){
if(haveFraction(a)){
//return a.toFixed(5);
}
return String(a).replace(/(\d)(?=(\d\d\d)+(?!\d))/g,'$1,');
}
function haveFraction (number) {
return (Math.ceil(number)>number);
}
function GETTIMEx(a){
//var k= new Date(a);
var s= moment(a).utc();//.format("MM月DD日HH時mm分ZZ");
var d=(s.format("D")-1);//(k.getDate()-1);
var h=s.format("h");//(k.getHours());
var m=s.format("m");//k.getMinutes();
if(m){return m+"分";}
if(h){return h+"時";}
return d+"日";
}
function GETPROG(a){
var k= ((moment(a) -Date.UTC(2014,0,1,0,0)+timezone)/(ibe_end-ibe_kaishi)*100).toFixed(2);
if(k=="NaN"){
return "※終了時未定のため達成率非表示";
}
return k+"%";
}
//PM表示を改造
function GETTIMEZ(a){
a=-Date.UTC(2014,0,1,0,0)+timezone+ibe_kaishi+a;
//a =ibe_kaishi+ibe_owari-a;
var k= new Date(a);
var s= moment(k).format("MM月DD日HH時mm分ZZ");
//(k.getMonth()+1) +"月"+
//(k.getDate()) +"日 "+
//youbi[k.getDay()] +" "+
//(k.getHours()) +"時" +
//k.getMinutes() +"分";
return s;
}
//正規でカンマつける
function addc(a){
return String(a).replace(/(\d)(?=(\d\d\d)+(?!\d))/g,'$1,');
}
function convert_left_time(bd){
var end = ibe_owari;
var ini = Date.UTC(2014,0,1,0,0)-timezone;
for(var j=0;j< bd.length;j++){
if(bd[j].name.match(/[a-zA-Zあ-ン\-\/]+/)!=null){
end = bd[j].data[bd[j].data.length-1][0]
-bd[j].data[0][0]+ini;
}
for(var i=0;i< bd[j].data.length;i++){
bd[j].data[i][0] = end - bd[j].data[i][0] + ini;
}}
for(var j=0;j< bd.length;j++){
bd_qs=bd[j].data;
bd_qs.sort(
function(a,b){
if( a[0] > b[0] ) return 1;
if( a[0] < b[0] ) return -1;
return 0;
});
}
return bd;
}
function GETTIMEx(a){
var k= new Date(a);
var d=(k.getDate()-1);var h=k.getHours();var m=k.getMinutes();
if(m){return m+"分";}
if(h){return h+"時";}
return d+"日";
}
//PM表示を改造
function GETTIMEZ(a){
a =a -Date.UTC(2014,0,1,0,0)+ibe_kaishi+jst-(-timezone+jst);
var k= moment(a);//new Date(a);
var s= moment(k).format("MM月DD日HH時mm分ZZ");
//var k= moment(a);//new Date(a);
//(k.getMonth()+1) +"月"+
//(k.getDate()) +"日 "+
//youbi[k.getDay()] +" "+
//(k.getHours()) +"時" +
//k.getMinutes() +"分";
return s;
}